分段(范围)专题图 Sample详情

最后更新时间:2019年6月17日

分段专题图又称范围专题图,当需要对事物进行定量绘图时,可以选择使用分段专题图。分段专题图根据每个属性值所在的分段范围赋予相应对象的显示风格,适用于显示分级排序的数据或者具有某种数值变动范围的数据。比如制作行政区划图的分段专题图时,对面积进行分段,每个段用不同颜色来表现各区面积的差异。

1

获取矢量图层

map = aMapView.getMap();
vectorLayer = (VectorLayer) map.getLayer(i);

2

获取图层某一字段属性值,构造分段信息

与单值专题图类似,可利用地图要素查询功能获取选定图层中所有要素的选定属性字段的属性值,作为分段专题图创建的数据来源。由于要对数据进行比较、分段,所以分段专题图只适用于数值型,日期型的数据。

在获取所有要素的某一字段属性值后,需要根据专题图分段的数目、字段值中的最大值、最小值来对属性值进行人为分段,获取每一段的最大值、最小值。

3

创建每一段的几何图形信息

根据当前图层类型创建相应几何图形信息(GeomInfo),在此以区图层为例。

//创建区几何图形信息对象
RegInfo regInfo = new RegInfo();           
regInfo.setFillClr((int) (1 + Math.random() * (1500 - 1 + 1))); //设置填充颜色(参考MapGIS颜色库颜色编号)

4

创建分段专题图绘制信息对象

根据不同分段创建分段专题图信息对象(rangeThemeInfo),设置图形信息、每段开始值与结束值等。

//创建分段专题图绘制信息对象
RangeThemeInfo rangeThemeInfo = new RangeThemeInfo();
rangeThemeInfo.setGeoInfo(regInfo);                   //为分段专题图绘制信息对象设置图形信息
rangeThemeInfo.setCaption("第" + i + "个");           //设置名称(必须指定不同的值,否则无分段效果)
rangeThemeInfo.setStartValue(String.valueOf(startValue + i * step));       //设置开始值
rangeThemeInfo.setEndValue(String.valueOf(startValue + step * (i + 1)));   //设置结束值
rangeThemeInfo.setIsVisible(true);                                         //设置可见性

5

创建分段专题图对象

创建分段专题图对象(RangeTheme),设置其分段专题图信息、进行统计的字段表达式及其他信息。

//创建范围专题图对象,并设置其字段表达式,专题图名称以及专题图可见性
RangeTheme rangeTheme = new RangeTheme();
rangeTheme.setExpression(fieldName);
rangeTheme.setName(layerName);
rangeTheme.setVisible(true);

6

显示专题图

获取专题图集合Thems,调用其append方法添加专题图。

// 将专题图添加到对应矢量图层上
vectorLayer.getThemes().append(rangeTheme);
//停止当前的获取数据的请求
aMapView.stopCurRequest(new MapView.MapViewStopCurRequestCallback() {
    public void onDidStopCurRequest() {
        aMapView.forceRefresh();         //刷新地图视图
    }
});

实现效果如下图所示:

分段专题图.jpg